package Problem3;

import java.util.HashSet;

/**
 * 这个题我的思路是，利用set集合判断其中元素的有无，通过左右指针来完成字符串的截取。
 *
 */

class Solution {
    public int lengthOfLongestSubstring(String s) {
        //当s长度为0 || 1 时，直接输出结果
        if (s.length() == 0 || s.length() == 1) {
            return s.length();
        }

        int left = 0, right = 0, len = 0;
        HashSet<Character> hashSet = new HashSet<Character>();
        // 遍历整个String
        while (right < s.length()){
            // 没有重复时，右指针++，记录最长的长度
            // 有重复时，左指针++
            if (!hashSet.contains(s.charAt(right))) {
                hashSet.add(s.charAt(right++));
                len = Math.max(len, hashSet.size());
            } else {
                hashSet.remove(s.charAt(left++));
            }
        }
        return len;
    }
}
